// File IPerson.h
//
// Purpose: Contains the definition of the interface IPerson
//
// Author : Bryson King
// Date : 19 March 2013
// --------------------------------------------------------------
#ifndef IPERSON_H
#define IPERSON_H

#include <string>

#include "Item.h"
#include "Telegram.h"

class CLocationMachine;

class IPerson
{
public:
	IPerson();
	virtual ~IPerson();
	virtual std::string Name() const = 0;
	virtual int Health() const = 0;
	virtual void SetHealth(int val) = 0;
	virtual CLocationMachine* GetLocationMachine() const = 0;
	virtual void Update() = 0;
	virtual bool  HandleMessage(const Telegram& msg) = 0;
	virtual int GetID() const = 0;
	virtual void AddItemToInventory(SItem* itemToAdd);
	virtual void RemoveFromInventory(SItem* itemToRemove);
	virtual SItem* RetrieveItemFromInventory(int itemID);
	virtual SItem** RetrieveAllItemsFromInventory(int& count);
	virtual SItem** RetrieveAllWeaponsFromInventory(int& count);

	bool InCombat() const;
	bool PersonAlive() const;
	void StartCombat();
	void EndCombat();

protected:
	CItems m_oInventory;

private:
	bool m_bInCombat;
};

#endif